home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / bits / shm.h < prev    next >
C/C++ Source or Header  |  2009-10-07  |  4KB  |  112 lines

  1. /* Copyright (C) 1995, 1996, 1997, 2000, 2002, 2004, 2009
  2.    Free Software Foundation, Inc.
  3.    This file is part of the GNU C Library.
  4.  
  5.    The GNU C Library is free software; you can redistribute it and/or
  6.    modify it under the terms of the GNU Lesser General Public
  7.    License as published by the Free Software Foundation; either
  8.    version 2.1 of the License, or (at your option) any later version.
  9.  
  10.    The GNU C Library is distributed in the hope that it will be useful,
  11.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.    Lesser General Public License for more details.
  14.  
  15.    You should have received a copy of the GNU Lesser General Public
  16.    License along with the GNU C Library; if not, write to the Free
  17.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  18.    02111-1307 USA.  */
  19.  
  20. #ifndef _SYS_SHM_H
  21. # error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
  22. #endif
  23.  
  24. #include <bits/types.h>
  25.  
  26. /* Permission flag for shmget.  */
  27. #define SHM_R        0400        /* or S_IRUGO from <linux/stat.h> */
  28. #define SHM_W        0200        /* or S_IWUGO from <linux/stat.h> */
  29.  
  30. /* Flags for `shmat'.  */
  31. #define SHM_RDONLY    010000        /* attach read-only else read-write */
  32. #define SHM_RND        020000        /* round attach address to SHMLBA */
  33. #define SHM_REMAP    040000        /* take-over region on attach */
  34. #define SHM_EXEC    0100000        /* execution access */
  35.  
  36. /* Commands for `shmctl'.  */
  37. #define SHM_LOCK    11        /* lock segment (root only) */
  38. #define SHM_UNLOCK    12        /* unlock segment (root only) */
  39.  
  40. __BEGIN_DECLS
  41.  
  42. /* Segment low boundary address multiple.  */
  43. #define SHMLBA        (__getpagesize ())
  44. extern int __getpagesize (void) __THROW __attribute__ ((__const__));
  45.  
  46.  
  47. /* Type to count number of attaches.  */
  48. typedef unsigned long int shmatt_t;
  49.  
  50. /* Data structure describing a shared memory segment.  */
  51. struct shmid_ds
  52.   {
  53.     struct ipc_perm shm_perm;        /* operation permission struct */
  54.     size_t shm_segsz;            /* size of segment in bytes */
  55.     __time_t shm_atime;            /* time of last shmat() */
  56. #if __WORDSIZE == 32
  57.     unsigned long int __unused1;
  58. #endif
  59.     __time_t shm_dtime;            /* time of last shmdt() */
  60. #if __WORDSIZE == 32
  61.     unsigned long int __unused2;
  62. #endif
  63.     __time_t shm_ctime;            /* time of last change by shmctl() */
  64. #if __WORDSIZE == 32
  65.     unsigned long int __unused3;
  66. #endif
  67.     __pid_t shm_cpid;            /* pid of creator */
  68.     __pid_t shm_lpid;            /* pid of last shmop */
  69.     shmatt_t shm_nattch;        /* number of current attaches */
  70.     unsigned long int __unused4;
  71.     unsigned long int __unused5;
  72.   };
  73.  
  74. #ifdef __USE_MISC
  75.  
  76. /* ipcs ctl commands */
  77. # define SHM_STAT     13
  78. # define SHM_INFO     14
  79.  
  80. /* shm_mode upper byte flags */
  81. # define SHM_DEST    01000    /* segment will be destroyed on last detach */
  82. # define SHM_LOCKED    02000   /* segment will not be swapped */
  83. # define SHM_HUGETLB    04000    /* segment is mapped via hugetlb */
  84. # define SHM_NORESERVE    010000    /* don't check for reservations */
  85.  
  86. struct    shminfo
  87.   {
  88.     unsigned long int shmmax;
  89.     unsigned long int shmmin;
  90.     unsigned long int shmmni;
  91.     unsigned long int shmseg;
  92.     unsigned long int shmall;
  93.     unsigned long int __unused1;
  94.     unsigned long int __unused2;
  95.     unsigned long int __unused3;
  96.     unsigned long int __unused4;
  97.   };
  98.  
  99. struct shm_info
  100.   {
  101.     int used_ids;
  102.     unsigned long int shm_tot;    /* total allocated shm */
  103.     unsigned long int shm_rss;    /* total resident shm */
  104.     unsigned long int shm_swp;    /* total swapped shm */
  105.     unsigned long int swap_attempts;
  106.     unsigned long int swap_successes;
  107.   };
  108.  
  109. #endif /* __USE_MISC */
  110.  
  111. __END_DECLS
  112.